//******************************************************************************
/**
 *
 * @file	pair_poke.h
 * @brief	連れ歩きポケモン
 * @author	saito
 * @data	07.02.14
 *
 */
//******************************************************************************
#ifndef PAIR_POKE_H_FILE
#define PAIR_POKE_H_FILE

//==============================================================================
//	デバッグ
//==============================================================================
//----
#ifdef PM_DEBUG
#endif	//PM_DEBUG
//----


//==============================================================================
//	incldue
//==============================================================================
#include "fieldobj.h"
#include "div_map_cont_def.h"
#include "eoa.h"

#include "player_code.h"

#include "pair_poke_st.h"

#define UPDOWN_DISP_OFS		(1)
#define RIGHTLEFT_DISP_OFS	(10)
#define RIGHTLEFT_DISP_OFS_S	(2)

typedef enum {
	POKE_ATTRDIR_UP,
	POKE_ATTRDIR_DOWN,
	POKE_ATTRDIR_RIGHT,
	POKE_ATTRDIR_LEFT,
	POKE_ATTRDIR_RD,
	POKE_ATTRDIR_LD,
}POKE_ATTR_DIR;

extern void PairPoke_RequestReset(FIELDSYS_WORK *fsys);

extern int PairPoke_ChangeWalkToJumpCode(const int inDir, const int inCode);
//↑常駐ソースfieldobj_move_2.cで使用されているが、コールはフィールド展開後なので、非常駐扱いでＯＫ

extern fx32 PairPoke_GetJumpDrawOfs(FIELD_OBJ_PTR fldobj);

extern u8 PairPoke_GetInfo_Fly(CONST_FIELD_OBJ_PTR fldobj);
extern u8 PairPoke_GetInfo_AnmSpd(CONST_FIELD_OBJ_PTR fldobj);
extern u8 PairPoke_GetInfo_BigSize(CONST_FIELD_OBJ_PTR fldobj);
//↑常駐ソースfieldobj_move.cで使用されているが、コールはフィールド展開後なので、非常駐扱いでＯＫ

extern void PairPoke_ChgRarePal(FIELD_OBJ_SYS_PTR fos);
extern void PairPoke_SetRare(FIELD_OBJ_PTR fldobj, BOOL inRare);
extern int PairPoke_IsRare(CONST_FIELD_OBJ_PTR fldobj);
extern int PairPoke_IsSetViewObj(CONST_FIELD_OBJ_PTR fldobj);

extern void PairPoke_GetBackPos(CONST_FIELD_OBJ_PTR fldobj, int *outX, int *outZ);
//↑常駐ソースfieldobj_move.cで使用されているが、コールはフィールド展開後なので、非常駐扱いでＯＫ
extern void PairPoke_GetBackOldPos(CONST_FIELD_OBJ_PTR fldobj, int *outX, int *outZ);
//↑常駐ソースfieldobj_move.cで使用されているが、コールはフィールド展開後なので、非常駐扱いでＯＫ
extern u16 PairPoke_GetDirAttr(CONST_FIELD_OBJ_PTR fldobj, POKE_ATTR_DIR inAttrDir);
//↑常駐ソースfieldobj_move.cで使用されているが、コールはフィールド展開後なので、非常駐扱いでＯＫ
extern void PairPoke_SetPlayerSide(FIELD_OBJ_PTR fldobj_player, FIELD_OBJ_PTR fldobj_poke,
		const u8 inSideDir, const u8 inDir);
extern void PairPoke_Appear(FIELD_OBJ_PTR fldobj_poke);
extern void PairPoke_SetPlayerPos(FIELDSYS_WORK *fsys, u8 inDir);

extern BOOL PairPoke_IsVanish(FIELDSYS_WORK *fsys);
//↑常駐ソースev_mapchange.c map_jump.cで使用されているが、コールはフィールド展開されている場所なので、非常駐扱いでＯＫ
extern void PairPoke_OmitAppearEffect(FIELDSYS_WORK *fsys);
//↑常駐ソースmap_jump.cで使用されているが、コールはフィールド展開されている場所なので、非常駐扱いでＯＫ
extern void PairPoke_SetColor(const BOOL inRare, FIELD_OBJ_PTR fldobj, BLACT_WORK_PTR act);
extern void PairPoke_LoadColToActHeader(const BOOL inRare,
										FIELD_OBJ_PTR fldobj,
									   	BLACT_WORK_PTR act,
										BLACT_HEADER *head);
extern void PairPoke_SetView(const BOOL inRare, FIELD_OBJ_PTR fldobj, BLACT_WORK_PTR act);

extern BOOL PairPoke_CheckAcmdSet(FIELDSYS_WORK *fsys);

extern void PairPoke_SetLateMoveInfo(	const int inCode, const int inGX, const int inGZ,
									PAIR_POKE_INFO_WORK *pPairPokeWork	);
//↑常駐ソースmap_jump.cで使用されているが、コールはフィールド展開されている場所なので、非常駐扱いでＯＫ
extern void PairPoke_Reset(FIELDSYS_WORK *fsys);

extern void PairPoke_SetVecPosY(FIELDSYS_WORK *fsys, const fx32 inY );

extern BOOL PairPokeEvAnm_WaitAnmEvent(GMEVENT_CONTROL * event);
extern void PairPokeEvAnm_PCCounterBallIn(FIELDSYS_WORK * fsys);
extern BOOL PairPokeEvAnm_BallIn(FIELDSYS_WORK * fsys);

extern void PairPoke_CallNaminoriEvt( GMEVENT_CONTROL *event );

extern void PairPoke_SetDir(FIELDSYS_WORK *fsys, const u8 inDir);
extern BOOL PairPokeEvAnm_WhiteFlash(FIELDSYS_WORK * fsys, const u8 inDiv, const u8 inWait);
extern BOOL PairPoke_IsNeighbor(FIELDSYS_WORK * fsys);
extern u8 PairPoke_GetPokeListNo(FIELDSYS_WORK * fsys);

#endif //PAIR_POKE_H_FILE